let myBehavior = require('../classic-beh.js')

const mMgr = wx.getBackgroundAudioManager()
Component({
  /**
   * 组件的属性列表  播放图片旋转动画
   * 小程序 提供了 专用的 动画 API  
   *  尽量用CSS3 canvas游戏
   */
  behaviors: [myBehavior],
  properties: {
    src: String
  },

  /**
   * 组件的初始数据
   */
  data: {
    pauseSrc: 'images/player@pause.png',
    playSrc: 'images/player@play.png',
    playing: false
  },
   //detached	无	在组件实例被从页面节点树移除时执行
  // 在组件实例进入页面节点树时执行
  attached: function(event) {
    this._recoverStatus()
    this._monitorSwitch()
  },
  /**
   * 组件的方法列表
   */
  methods: {
    onPlay: function(event) {
      if (!this.data.playing) {
        this.setData({
          playing: true
        })
        mMgr.title = this.properties.content
        mMgr.src = this.properties.src
      } else {
        mMgr.title = this.properties.content
        mMgr.pause()
        this.setData({
          playing: false
        })
      }
    },

    // 播放 播放中状态保存, 切换时不受影响
    _recoverStatus: function() {
      if (mMgr.paused) {
        this.setData({
          playing: false
        })
        return
      }
      if (mMgr.src == this.properties.src) {
        this.setData({
          playing: true
        })
      }
    },

    // 同步各个地方播放暂停的状态, 包括点击小程序的自带暂停和播放
    _monitorSwitch: function() {
      // 播放音乐
      mMgr.onPlay(() => {
        this._recoverStatus()
      })
      // 暂停音乐
      mMgr.onPause(() => {
        this._recoverStatus()
      })
      // 关闭音乐播放器
      mMgr.onStop(() => {
        this._recoverStatus()
      })
      mMgr.onEnded(() => {
        this._recoverStatus()
      })
    }
  }
})